package com.example.springboot.service.impl;

import com.example.springboot.annotation.Slf4jAnnotation;
import com.example.springboot.mapper.UserMapper;
import com.example.springboot.pojo.User;
import com.example.springboot.service.UserService;

import com.example.springboot.util.PageBean;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;

/**
 *  用户信息表的业务实现类
 * @Author:wzf
 * @Data:2022/2/21
 * @Version:1.0
 */
@Service
public class UserServiceImpl implements UserService {

  /**
   * 用户信息表Mapper接口
   */
  @Resource
  private UserMapper userMapper;

  /**
   * 业务层的实现
   * 查询用户信息表
   * @return 用户信息表中内容
   */
  @Override
  public ArrayList<User> getUserInfo() {
    ArrayList<User> listUserInfo = userMapper.getUserInfo();
    return listUserInfo;
  }

  /**
   * 根据用户ID进行查询
   * @param id 用户ID
   * @return  用户信息
   */
  @Override
  public User findByID(Integer id) {
    return userMapper.findByID(id);
  }

  /**
   * 业务层的实现
   * 添加用户信息操作
   * @return 返回受影响行数
   */
  @Override
  public Integer insertUser(User user) {
    return userMapper.insertUser(user);
  }

  /**
   * 业务层的实现
   *  根据用户ID进行删除操作
   * @param id 用户ID
   * @return
   */

  @Override
  public Integer deleteUserByName(Integer id) {

    return userMapper.deleteUserByName(id);
  }

  /**
   *  业务层的实现
   * 修改用户信息
   * @param id    用户ID
   * @param name  用户名称
   * @param age   用户年龄
   * @param email 用户Email
   * @return
   */
  @Override
  public Integer updateUser(Integer id,String name,Integer age,String email) {
    return userMapper.updateUser(id,name,age,email);
  }

  /**
   *  分页查询
   * @param currentPage
   * @param pageSize
   * @return
   */
  @Override
  public ArrayList<User> findUserByPage(Integer currentPage, Integer pageSize) {

    PageHelper.startPage(currentPage, pageSize);
    ArrayList<User> listUserPage=userMapper.getUserInfo();
    Integer countNums=userMapper.getUserInfo().size();
    PageBean<User> pageData=new PageBean<>(currentPage,pageSize,countNums);
    pageData.setItems(listUserPage);
    return pageData.getItems();
  }

  /**
   * 联表查询
   * @return
   */
  @Override
  public ArrayList<User> findUserByUserScope() {
    ArrayList<User> userByUserScope = userMapper.findUserByUserScope();
    return userByUserScope;
  }

  /**
   * @return
   */
  @Override
  public ArrayList<User> socketUserByAge() {
    return userMapper.socketUserByAge();
  }


}
